perm filename ROM2.FAI[CMS,LCS]2 blob
sn#295992 filedate 1977-07-27 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00013 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 .INSERT ASMBL.FAI[CMS,LCS]
C00003 00003 BIT RATE GEN CODES
C00006 00004 MAIN DDT LOOP
C00008 00005 C3: CMPI "P" 2
C00010 00006 TTY MODE CHECK THIS OUT FIRST
C00013 00007 PRINT ADDRESS/VAL
C00015 00008 INPUT FROM BEEHIVE
C00016 00009 RESET BEEHIVE I/O
C00018 00010 UNLOADER
C00020 00011 OUTSTR OUT TO BEE IF TFLG IS CLEAR OR MODEM IF NOT EQUAL
C00022 00012 BLT ROUTINE
C00024 00013 ROM INTER VECTS
C00025 ENDMK
C⊗;
.INSERT ASMBL.FAI[CMS,LCS]
; RAM
PCL: 0 ;0
PCH: 1 ;1
PS: 2 ;2
A: 376 ;3
X: 176 ;4
Y: 377 ;5
SP: 377 ;6
ONMIA: 377 ;7
BEES: 377 ;10 OLD BEEHIVE STATUS
OBEEC: 377 ;11 DEFAULT BEEHIVE CONTROL WORD
BEEB0: 377 ;12
BEEB1: 377 ;13
ADR: 377 ;14
377 ;15
VAL: 377 ;16
TFLG: 377 ;17
TMP: 377 ;20
377 ;21
111 ;22 ← FF MARK
; ODT RAM & INTERUPT VECTORS
LOC 1000
IRQA: REPEAT 3,{111↔} ;1000 - 1002
IRQB: REPEAT 2,{111↔} ;1003 - 1004
NMIA: REPEAT 3,{333↔} ;1005 - 1007
377 ;1010 ← FF MARK
; BIT RATE GEN CODES
; 0 = 0 10 = 9600
; 1 = 19.2K DON'T USE 11 = 4800
; 2 = 50 12 = 1800
; 3 = 75 13 = 1200
; 4 = 134.5 14 = 2400
; 5 = 200 15 = 300
; 6 = 600 16 = 150
; 7 = 2400 17 = 110
; EPROM STARTS HERE
LOC 176274 ;TOP 1K SHOULD BE 176000
; LOC 176000
BEEC ← 174100 ↔ BEED ← 174101 ;BEEHIVE CONTROL AND I/O ADDRESS
MODC ← 174120 ↔ MODD ← 174121 ;MODEM CONTROL AND I/O ADDRESS
BEEDEF←MODDEF←25 ;BEEHIVE AND MODEM CONTROL DEFAULTS
BBRDEF←MBRDEF←15 ;BIT RATE DEFAULTS 15=300 (FASTER FOR BEE?)
BBIT←20 ;BREAK BIT
; BREAK OPCODE CHECC
BRKCK: STAZ A ;SAVE A 2
PLA ;GET OLD PS 1
PHA ;RESTORE STACK 1
ANDI BBIT ; 2
BNE BRKIN ;AND CK FOR BRK 2
LDAZ A ; 2
JMPIN IRQB ;ELSE JUMP @IRQB 3
PTBL: 4 ;PS (4 IS IBIT?) 1
20 ;PCL 1
2 ;PCH 1
VINIT: JMP BRKCK ;INTERUPT JMP CODE 3
10 ;I/O 1
2 ; 1
JMP ODT ; 3
; RESET STARTS HERE
RSTA: LDAI BEEDEF ;SETUP BAE CONTROL 2
STAZ OBEEC ;WORD DEFAULT 2
LDAI BBRDEF ;SETUP BRATE DEFAULT 2
STAZ BEEB0 ; 2
STAZ BEEB1 ; 2
↓LDXI 2 ; 2
PLOOP: LDAX PTBL ;SETUP PC AND PS 3
PHA ; 2
DEX ; 1
BPL PLOOP ; 2
LDXI 7 ; 2
JLOOP: LDAX VINIT ;SETUP INT VECT 3
STAX 1000 ; 3
DEX ; 1
BPL JLOOP ; 2
; JUMP TO HERE FOR DDT AND SAVE EVERYTHING
ODT: STAZ A ;SAVE A 2
BRKIN: LDA 1005 ;NMIA 3
STAZ ONMIA ;SAVE NMIA AND FORCE 2
LDAI RTI ;RETURN FROM INTERUPT 2
STA 1005 ;ON NMI 3
STXZ X ;SAVE X 2
STYZ Y ;SAVE Y 2
PLA ; 1
STAZ PS ;SAVE PS AND PC 2
PLA ; 1
STAZ PCL ; 2
STAZ ADR ;SETUP ADDRESS 2
PLA ; 1
STAZ PCH ; 2
STAZ ADR+1 ; 2
TSX ; 1
STXZ SP ;SAVE STACK PONITER 2
CLD ;FORCE BINARY 1
NIN: JSR SETBEE ;INIT BEEHIVE I/O 3
; MAIN DDT LOOP
PLF: LDAI 12 ;PRINT LF 2
JSR PCHR ; 3
PCR: LDAI 15 ;PRINT CR 2
JSR PCHR ; 3
LDXI 0 ; 2
LDAIX ADR ;GET CONTENTS 2
STAZ VAL ; 2
JSR PAV ;PRINT ADDRESS/VAL 3
LDAI " " ;PRINT SPACE 2
JSR PCHR ; 3
STXZ TMP ;X IS 0 2
STXZ TMP+1 ; 2
STXZ TFLG ; 2
NXTCHR: JSR GCHR ;WAIT TILL CHR 3
ANDI 177 ;STRIP TOP BIT 2
JSR PCHR ;ECHO IT 3
CMPI "↑" ;CHECK THIS 2
BNE C1 ; 2
LDAZ ADR ;STEP BACK 2
BNE NOD ; 2
DECZ ADR+1 ; 2
NOD: DECZ ADR ; 2
JMP PLF ; 3
C1: CMPI 12 ;LF 2
BNE C2 ; 2
LDAZ TFLG ;STEP FORWARD 2
BEQ NODEP ; 2
LDAZ TMP ;DEPOSIT 2
STAIX ADR ; 2
NODEP: INCZ ADR ;STEP 2
BNE PCR ; 2
INCZ ADR+1 ; 2
JMP PCR ; 3
C2: CMPI "/" ; 2
BNE C3 ; 2
LDAZ TFLG ;CHECK FOR NEW ADDRESS 2
BEQ EROR ;NO ADDRESS 2
LDAZ TMP ;EXAMIN 2
STAZ ADR ; 2
LDAZ TMP+1 ; 2
STAZ ADR+1 ; 2
JMP PLF ; 3
¬
C3: CM@!$∩E D$v∩∩∩H~∀∩∪ ≥
∪εP∩v∩∩$d~∀∪≥≡t&d"εh&∀∩J∩⊗0In2⊗
2∃α∩% $%HhP$&N$λ&
IIn∩⊗4
V2Q∧∩&Qα∀
R∀%_h($&≥"∧&
∪%l$HIL4(HJ2∩εPJ>
⊗,_%l$HIH4(HJNR∧L∩⊗⊗KZ
ε⊗DJZ∃α≤z:RJ|`%L4Ph($&d"bh&≥%nN-"VAα≥"ε∞,HIH4(HJRbLHIl$$Kλ4($Lb∩εhMα∞ %XH$%HhP$&BDλ$%lHH%D4PH&2∩
P&B∞`Il$$K⊂4($Mα"∧$KX$$%λh($&d"εh&¬_%l$HIH4(HJB"∧HIl$$Kλ4($Lb∩bhM@%l$HIH4(HJ2∩fPJd%lHH%H4PH&2∩
P&>:lJ∧%n4Jaα~M∩NQαtj%α
M"∀%HhP$&N$λ%EAβ(%l$HIL4(HJ2∩εPJ∧%lHH%H4PH&JRHH%nN$
JQα¬∩>≡Jh$%DhP4(&≠!h&∞mα$%
"⊂%n∞D*∞-α4zIαR%Iα6>$(%H4PH&
⊗λJRRdKX$$%⊂h($&≤jB$%∀⊃λ%n≤B⊗∞-∧2>Iα∀z>RN%∩ε@%⊂h($&∀*D&
|zP%lHH%H4PH&∞6∧H%
1⊂In∞",~-α~⎇⊃α2> $%HhP$&
-λ&
>⎇ %l$HIH4(HH4($L~6B$J∩Uλ4PH&
:(J∞.6 h($&TjAαVtb>ε⊂hP&∞.m!h&∞mα$%
j⊂4($L∩:∀&u*44(HJ*6@LjRNPhP4*:,ih$&≤jB$%3%n∞D*∞-α4zIα>≥"ε1αu*4%HhP$&
≤_&⊗J⎇⊂%l$HIH4(HJ∞6BHI]@%XH$%HhP$&
≥_&⊗J⎇⊂%n⊗∃∩>Iα|qαV:\r>↑8K⊂4(4PH&2∩DH%L%\rV6
-⊂&>→∧∩&RLHIH4(M~2>>βP&εNeP&R6InN"L2QαRm↓αε:"αR6A[λ%H4PH&J>eP&R6αYD%lHH%H4PH&∩⊗@H%l$HID4(HJ
:∀M~2>>Il$$K⊂4($L
:∩$K8%l$HIH4(HJ>JεPJR6@KZNRV41α&Q∧
Qα
⎇"R>4K⊂4($M~RεhM"6@%XH$%HhP$&&t~h&R4b≤%n≤*QαRm↓α~28$%HhP$&
t(&:⊗E %l$HIH4(hP&⊗J⎇⊃h&2$
$%\KZz≥HH%H4PH&*N⊂JB∞"⊂InJ&t9α
⊗d`$%LhP&:⊗E!h&*m&:b$~"H%XH$%LhP4(1mα%"eα6|"∀&∞D*∞-α$B&Mα⎇*Qα~M∩NP4PJRRePJ*NHM~⊗R6| %n&tJQα6|"⊗4$K_4($LRNH&≤*R:6HInN⊗%*Aα&u"⊗JV¬!αZ⊗≥">H%_h(4(M"2>>βP&2∩λJ
⊗⊗_In∞.,~-α&2α
⊗∃¬"Jε:_IL4(HJε:∩HIH%n∀*≥α&~α⊗6B%H$%HhP$&
-λ&:>⊂Il$$K⊂4(4PH&2∩λJ6>∩_In∞",~-α6|!αJ⊗≥0$%HhP$&2≥∩∧$%\2>Iα≤BH$%λh($&∀~&:|⊂%l$HIH4(HJ2∩∧Lj>∩⊂KZ≡⊗Q∧~"Iα5∩>5αlz∩⊗4K_4($M~R∧&∀*⊗⊂%\zVRB-!αR=∧∩⊗∀$K_4(4PJ:> PJ2∩∧Lj>∩KZ∞"⊗≤Yα&→∧j>⊃α%∩ε:LK_4($L
:∩%IH%n∀*≥α&~α⊗6B%H$%DhP$&
-λ&R2|z@%lHH%H4Ph($&d"∧&
,*%n≤Yα6>"αJ⊗∞0H%L4PH&2N∀λ$%n4zIα∞E⊂$%DhP$&
≤_&R2|z@%lHH%H4PH&2∩λJ
⊗⊗ In≡⊗"α∞"I∧2J>5∧∩⊗∀%_h($&≥"∧&6|"⊂%n⎇*RBV"αR=αlz∩⊗4 JMP TLOOP ; 3
; BOOT STRAP
BOOT: PHA ;SAVE DDT CHR 1
LDAZ PCL
STAZ ADR
LDAZ PCH
STAZ ADR+1 ; 2
↓JSR SETNMI ;INIT INTERUPT VECTOR 3
INX ;CKECK THIS 2
α LDAI "↑" ;OUTPUT CHR TO 2
JSR WMOD ;INITBOOTSTRAP 3
BOTLOP: LDYI 1 0⊗∩$∩d
∀%⊃β→h∪∃'$%%≠∨λ$w∂(↓β⊃$∩$f~∀∩%β⊂~∩HIEM\KX$$%⊂h($_9U∧Hα(P∧!.prλXp¬P$Q⊂"'g⊃DDYεB∧@ BEQ DONE 0⊗∩$∩d4PH&
∞α1∃D∀YI@KX⊃⊃∪⊂"B"(→αh$DLε0 ; 2
BCC XBELL 0⊗∩$∩d4PH&BαλH%nN
2∃α∞E⊂$%DhP$&2$
$%TKX$$%⊂h $&≥"∧&
,*⊂%@1⊃⊂K_Q!⊂M∧β⊂"!↔b""&⊃ ¬εEαf ∂ADIT: DEY∩∩mβ⊃π,A∪A→∪%'λ$∩b4PH&
:(J0∀L)A∪@1 ∧DYβ@
∩∪¬'⊂∩∧HIfNαL2Qα"b→α↑
H$%DhP$&ε≤b∧$%XH$%DhP$&ε≤b∧∧%XH$%DhP$&ε≤b∧$%XH$%DhP$&NαH∃PMHiD(K8∧p*HαP ∀NP 2
∪∃5 ∪⊃β1∩`,HH%L4Ph(&:L∩1h_→d$H⊗⊂
a↔b""& αE∧DSβRAZ TF@→∞$p∞ε∩ ∧¬$⎇↓⊃∪⊂@"B"*:α dlα`b)∧Nij'i⊃P b∀∧DYεB∧@ IN@π4&"H%@8_E∩¬tλ∀%∩¬0λε⊃",C!! ∧a'⊃Da'j∪'h∧]S ¬P@($∩∩d~(∩∪∪≥λ
`&ε
"[λ↔1⊂HK!Q HL)hPL∀xID`:α.b!⊃,C"AP¬ DOL¬∃HMα2∧∧IX$$%λh $_9U∧Hα(C∧∧P 2~∀$∪¬λJ2>ε I`_λα"$AP¬De∪h∧cgα]i`∀ART ON BGOT 3
L@∨β⊂t∪∃≠@∪%'≤$v$∧I_4(Q!∃D∀YICPLHH∀HKq↔4∧IDαE@Qj"!⊗@εE∧Bij DP ¬ED ;DGN≥(A/β%(∩∩f4∀∩&d"ε$%I`_H⊃⊗ h⊂⊃_$-λα3∪h_∩5α'⊃""$APA"@↓Gh∀∀I→Uλ⊂(H∀Q4j5βk fλεE∧h⊂k≥∧f⊃,$DXB]QP'Q⊂!d)∀DDYεB∧Dij⊗-∧j#∪#D]iQj⊂!$U⊂&`iRDDYεB∧Df"⊗dDY∧NQP'cλ!$j)H∃P!DBYεE∧Be)i∧T&'ghα]h)$S*⊂_⊂∪i⊂_DBYFE∧Bf",$BZD]DBDYεEαDf" RD[D]BDDYεB∧Dij⊂m∧j#∪#D]DBDYεEαDe)iαaf'gT∧]h)∩g*⊂~H'*fiK⊂_⊂⊗H≠DYFB∧@ LDAI "∂" 3 2
JSR PCHR ;PRINT / 3
LDXI 1 3 2
LDYI 3 ;BIT MASK AND 2
STYZ TFLG ;# OF BITS +1 2
JSR DLOH∂ ∩m!%∪≥P@`@Zf∩∩f4∀∩β→⊃1∩∩d$v∩∩∩H~∀∩∪1 β∩∩\∩v∩∩$d~∀∩%')β4%)
→∞$v∩∩∩H~∀∩∪)'$∪π1∨↔ ∩m!%∪≥P@dA≥U≠&X@@@Z@n$f~∀∩%%)&∩$v∩∩∩D~∀~∀%π→∨∨@t∪→ e∩∩f∩m
∨$@LA¬∪)LA)∞A∧A≥+~$d~∀∪I→∨∨ h∪%∨→h∪-β_$w%∨)¬)
Aβ⊃$A-β0∩∩d~(∩∪%∨14∪β H∩v∩∩$d~∀∩%%∨→4%β $VD∩v∩∩$d~∀∪⊃→∨∨ h∪ 2$∩v∩∩$b~∀∩%¬≥
∪I→∨∨ $v∩∩∩H~∀∩∪1 β4∪Yβ_∩w≥(A≥∃1(A≥U≠¬$$d~∀∩%β≥ 4%)
→∞$v∩∩∩H~∀∩∪=%β∩∩X`∩w≠¬↔
AβMπ∪∩∩$d~∀∩%∃'$∪Aπ⊃$∩m!%∪≥PA∪(∩$f~∀∩% ∩$v∩∩∩D~∀∩∪ ≥
∪π1∨∨ ∩m≥1(↓≥+~∩$f~∀∩%%)&∩$v∩∩∩D~∀~∀_vA∪9!+(A→%∨~A ⊃∪Y
~(L:ε"IPJ2α∧L∩⊗⊗IX$$%_h($→J5∀λα".hd"aeH$c⊂"Sh*,DBX@
BCC GC@@$$p$⊃∩ h↓@∧Df⊃ @ BEED ;GEPλAπ!$∩∩f4⊂∩∪%Q&∩∩v$∩∩b~(rA∨+Q!+(AQ_
α
,*"&Z(h(&B≤BIh&∧B∧$%]~ε@4Tλ4E⊂α"$!QB5p)~∞B3λH ∧a"QaD]DBDYFEαD`g"∩DY∧]⊂βHECK AF FUL@_∩$d⊂∀(HJα-⊃~tMA↔0HH⊗!P@!"4∪λ⊃".b!⊃,#"A⊃4p
Ba"bbα]h ∩INT IT 3
RTS 0⊗∩$∩b4Ph)mαLrBVQ∧2J>5∧j>∩⊗hh &Jlz⊃h→HDλLYxD1(¬DDBYFE∧Bd∧S@%∧∩∩gπ!π-∧J→α⊗mαRd$Hε⊂hP⊃_$8b4S)xα.b!⊃,C"A⊃3⊃⊂!→3q⊃↓↔qq5∧λr⊂ ∧BYFE∧Bi*)DB]DDDLFA≥@ MP)!U(A)≡↓≠∨ 4~∀∪/5∨λt∪A⊃α∩∩m'β-
↓π⊃$∩$b~(L2V21PJ2∩∧Lj>∩KX$$%_h($_→d$H⊗!∪\≤λX4Z∧α1Hλj3∪α!⊗@εE∧Ba"`⊃ FULL ; 2
α PLA ; 1
STA MODD ;OUTPUT↓∪ @∩$f~∀∩%%)&∩$r∩α∩D~∀4P1mα∀*N⊗Q∧∩⊗⊗"M2∃α∃yphPQ!∀*Lλ↔dε-m_M_⊂@ @¬$bA|@bnhβ QD%\∩⊗∃α∃∩εR∃∧J9>>-!αε∩%⊂4(ε∃⊃Iα⎇β ]@#⊗@Dαh⊂TF4↔h&vα_Z→B]fgbλ!) j⊃P$g/OQT ADDR
SETBEE: LDA B@ε$s'β-∀A∨2 ∧∧∀1(∀jH5∃4a⊗c"B!~u⊂6A_Q14a↔b""&!"B")H⊂6B((αba_α]ibj∃h⊂!"Qd$k"H!$j⊂∀ j"DLεE∧DTj Da∀_∧]aR g"f∀DDYFB∧@f"⊂m∧a"Qa_D]Tbj*hλ!"bd∩k"P!∩j⊂! U"DYεB∧Dij⊂Da)λB]DDDLFE∧DS" dDLD]i"Tbj⊂ Pd`DDLεE∧DTj Da⊃baD]BDDYFB∧@f"⊂dDa"Qb"c∧Nibb*T⊂""c⊂jf*⊂ bP$KgDYεB∧Dij⊂Da"bPD]DDBYFE∧Bi*)DB]DDDLFEεE∞P)"iQj⊂&gQ"fP$KgFE∧Tbj&gQ≥∧f"⊂dDfa∀""c∧NDDDYβE∧DiU Da)∧]ibU*h⊂!∀ j"P⊂d g"S)DYFB∧Dij⊂Da)→B]DDDLFE∧DS" dDLD]i"Tbj⊂ Pd`DDLεE∧DTj DfSb!D]BDDYFB∧Df"⊂dDfgQ""c∧Nibj*T⊂""c⊂jf*⊂∪gb⊂$KgDYεB∧Dij⊂Dfgb⊂DYDDBYFE∧Bi*)DB]DDDLFEεEαdk%≥αh& FB∧Dh&⊂FE∧DT& FEαi)g≥αf" dBi*$FB∧Dij⊂DXX_
FE∧DR&h⊂∧S$gεEαDFE≥H)bj*T⊂'&dH$g*"T*h*⊂∃ aj'T⊂%*fTεA∧iQj#&dN∧f",∩DXY∧NDDDYβE∧df∪gh≥∧S" l∧Rk%∧]P&*⊂$U%⊂"'H'&d`BYFE∧Bij lαXX_~B]g&dPDDDYCE∧Db⊃l∧D]BDDXFB∧Da(∪∧df'Sh∧]DBDYεEαDi*)BD]DDBXFEεBβ≥P*g∪'`b"TεE∧jS&'`b∞∧FE∧Be)i∧Tbj'&RFE∧DS" m∧T!fεEαDij V∧`b)βE∧Df⊃ m∧h⊂dεE∧Bij mα`b)∃LD]DDBYεE∧Bdg,εB∧@f"⊗dDXDNjg&'Pb)P#∀'fP ∀!f$εB∧jf'Sh≥∧f⊃ dl∧Pb)∧]PiijfQiP,⊂∩iP_∧CE∧Db⊃lFE∧Ba'"DS)g$a∪εE∧DS)i DB]id$Q*⊂$ S#⊂'k⊃iεE∧Bf)i CE∧Df∀i FEαDf)i⊂FE∧b∪dj≥∧Si dDM_εE∧Bij mαj#CE∧De∀i∧kfSbεE∧Be)i∧T&gbεB∧DafT-∧j#∪#FE∧Ba"hDUf#ghβE∧De∪h∧i)SεEεEαf)g$P&≥∧`S"$DXMD]af⊃`i⊂&⊃c*εEαDf",RDXFEαDdg!V∧`b)α]`b)λ/P b∀⊂∃P_BDYεEαDa'"Bb#djα]g"l∃∧DDYβE∧DdS!m∧`Q)∃XDNdc⊂!Pi),DBYεE∧Ba'"DQ'dj∧Njg!gS $j$Sg f⊂∩*fh∧LεEεE∞P&bfSi,P*⊃ijεEαfj)j∞∧f",RDXεEαDij,V∧h)FB∧f`iN∧f" RDYFEαDij V∧h!fβE∧DiU,m∧h⊂dεE∧Sf≥∧f⊃ dlDT!fεEαDj lβE∧fl∞∧dg,βE∧Dj⊗ FE∧Bij dVDh!fβE∧DaSh$lDT!fεEαDa"hBccgbβE∧a Q≥∧f"⊂m∧h!SεE∧DTj m∧Pb)εEαDf" V∧h!dβE∧DiU m∧`Q)∃XFB∧c$g∩i]∧e∪h∧h&⊃εE∧cSgb≥∧Rg!m∧T)FE∧Ba'"DSlεE∧Bdg!mαh!fεB∧Da'⊃DffεB∧Ddg⊂m∧h!RεE∧DS" m∧T!dεEαDafh∩DY_∧NZ%FEαDa'"Bf`iFB∧Da"TDc$g∩iFEβ≥P'jU)j) OET T@≡A
A∪_A)
→≤A∪&A
→⊗ε⊂∧∧`:H∪3hH3(∩(d⊃Su∧λ450)@ ¬∧gTh∧R: TSX
SEI
∀α∪)'$∪&I)≠ ~(∩∪→ a∩∩`~(∪'∨+Pt∪→ ¬∪0∪)5 ~(HJ
6$L*:%8¬∀A↔pR5∧εh∩4dλ3Q⊂⊃"f$fRjεE∧Bf",mαj#CE BN@
∪!5∨λ∩w
A∪_A)
→≤z`A≠=λAβ6~∀∩%∃'$∪Aβ⊃$~(∩∪∃≠@∪∪)≠@~∀∪!5∨λt∪)'$∪/5∨λ~∀%∪)6βP&&:≥P&B6α↓PPH_)d(M9zU (!⊃∀Lt8εB*I4
`_CE JMP SOUT
ENDSP $t%β⊃∩~(∩∪)'`~∀∩∪)≠ ∪!=!&∩v→∪0A'Qβπε~(~∧∪&I)≠ @PJ2∩ε@IQALhP$&N$
h&Rm4($Lb∩ε@↓⊗Cβ Q!⊂M≥H≠ M$ 1
; 16 BIT ARITH
; FIXED BY REM TO HAVE ARGS AND RESULT IN USUAL LOW-HIGH ORDER
ADD16: TSX ; 1 (FIXED BY REM, WAS TXS)
LDAX 405 ;GET LOW 3
CLC ; 1
ADCX 403 ; 3
STAX 405 ; 3
LDAX 406 ;GET HIGH 3
ADCX 404 ; 3
FIXS: STAX 406 ; 3
;Now bubble return address up two bytes on stack
POPS: PLA ; 1
STAX 403 ; 3
PLA ; 1
STAX 404 ; 3
RTS ; 1
SUB16: TSX ; 1 (FIXED BY REM, WAS TXS)
LDAX 405 ;GET LOW 3
SEC ; 1
SBCX 403 ; 3
STAX 405 ; 3
LDAX 406 ;GET HIGH 3
SBCX 404 ; 3
JMP FIXS ; 3
; BLT ROUTINE
BLTR: TSX
SEI
LDAX 410 ;STACK SHOULD HAVE
STAZ ADR+1 ;+10 SOR ADR H&L
LDAX 407 ;+6 DEST ADR H&L
STAZ ADR ;+4 LAST DEST ADR H&L
LDAX 406
STAZ PCH
LDAX 405
STAZ PCL
JSR S2TMP
LDXI 0
BLTLOP: LDAIX ADR
STAIX TMP
LDAZ TMP
CMPZ PCL
BNE INCIT
LDAZ TMP+1
CMPZ PCH
BEQ ENDBLT
INCIT: INCZ ADR
BNE INCT
INCZ ADR+1
INCT: INCZ TMP
BNE BLTLOP
INCZ TMP+1
JMP BLTLOP
ENDBLT: CLI
TSX
PLA
STAX 407
PLA
STAX 410
PLA
PLA
PLA
PLA
RTS
; RELOCATABLE SUBROUTINE SUBROUTINE
RELSUB: TSX
LDAX 402
PHA
LDAX 401
PHA
CLC
ADCI 2
STAX 401
BCC SKP
INCX 402
CLC
SKP: RTS
; ROM INTER VECTS
LOC 200265
; LOC 177772
0
NMIV: 5
2
RSTV: 30
374
IRQV: 0
2
; NMIV: ABSO NMIA ; 2
; RSTV: ABSO RSTA ; 2
; IRQV: ABSO IRQA ; _2_
; 6
END